(function () {
  // 在site.json中导入如下配置，即可引入该JS
  //  "schemaApi":"jsonp:/pages/main.js?callback=jsonpCallback",
  //   json里面每个页面 增加一个对应的children值（3个参数），其他页面配置都写在js里
  // "label": "欢迎页",
  // "schemaApi":"jsonp:/pages/main.js?callback=jsonpCallback",
  // "url":"/hello"
  // url代表js+模板数据组合出来的页面地址，通过该地址即可实现页面之间的相互跳转

  const response = {
    type: "page",
    body: [
      // 每一个body的属性值对应CRUD组件的一个功能
      //   新增 body中属性的排列遵循空间位置，新增按钮建议放在顶部，至少要在数据列上
      {
        label: "新增",
        type: "button",
        // 按钮类型弹框
        actionType: "dialog",
        level: "primary",
        className: "m-b-sm",
        dialog: {
          title: "新增表单",
          body: {
            type: "form",
            // 初始化请求API
            // 直接请求接口，获取数据
            // 表单项的 value 是不支持表达式，所以不要表单内部尝试用 value: "${xxx}" 来关联数据。
            initApi: "/api/admins/member/initForm/v1",
            api: "post:/api/admins/member/insert/v1",
            api: {
              method: "post",
              url: "/amis/api/mock2/form/saveForm",
              
            },
            // 过长的列会被格式化
            body: [
              // body中的属性，例如可以根据type的属性值去查官方文档。例如input-text
              // required true 代表必填项【直接查文档可知，在form表单项中，而非文本框中】,maxLength代表数据长度
              {
                type: "input-text",
                name: "name",
                label: "用户名",
                required: true,
                maxLength: 8,
              },
              {
                type: "input-text",
                name: "age",
                label: "年龄",
                required: true,
                maxLength: 3,
              },
              {
                type: "input-text",
                name: "email",
                label: "邮箱",
                required: true,
              },
            ],
          },
        },
      },
      //   展示
      {
        type: "crud",
        // 初始化请求API
        initApi: "",
        api: "/api/admin/page",
        syncLocation: false,
        // 开启查询区域,查询调用的接口即展示的接口
        autoGenerateFilter: true,
        //配置请求接口的默认参数
        defaultParams: {
          // 每页20条数据
          perPage: 20,
        },
        //   columns对应的是数据列
        columns: [
          // name对应的是字段名
          // label显示名
          // 查询框，模糊查询 【这个和普通查询有冲突】
          // {
          //   name: "keywords",
          //   label: "查询",
          //   // 增加该列为查询条件,设置为true即默认 【对应后端的列表查询】
          //   searchable: true,
          //   //隐藏整个查询列
          //   hidden: true,
          // },
          {
            name: "id",
            label: "用户ID",
            // 增加该列为查询条件,设置为true即默认 【对应后端的列表查询】
            searchable: true,
            // 查询的数据排序
            /*后端收到的请求参数  
            {"orderBy": "engine", // 这里为所配置列的 name
              "orderDir": "asc" // asc 为升序，desc 为降序}
           */
            sortable: true,
          },
          {
            name: "name",
            label: "用户名",
            // 增加该列为查询条件，这种查询方式类似于表单条件
            searchable: {
              type: "input-text",
              name: "name",
              label: "主键",
              placeholder: "用户名",
            },
          },
          { name: "age", label: "年龄" },
          { name: "email", label: "邮箱" },
          { name: "status", label: "账户状态" },
          //   操作列【里面有删除和修改】
          {
            type: "operation",
            label: "操作",
            // 固定列宽度
            with: "120px",
            buttons: [
              {
                label: "修改",
                type: "button",
                //dialog 指定为弹框而不是抽屉
                actionType: "dialog",
                dialog: {
                  title: "新增表单",
                  body: {
                    type: "form",
                    // 修改表单上加上请求接口来初始化数据
                    initApi: "/api/admins/member/initForm/${id}/v1",
                    api: "post:/api/admins/member/update/v1",
                    body: [
                      // 隐藏属性，避免post时还需要地址传ID，不安全
                      { type: "hidden-input", name: "id", label: "用户ID" },
                      { type: "input-text", name: "email", label: "邮箱" },
                      { type: "input-text", name: "age", label: "年龄" },
                    ],
                  },
                },
              },
              {
                label: "删除",
                // 按钮隐藏 后面this表达式写隐藏条件
                hiddenOn: "this.name=='admin'",
                type: "button",
                actionType: "ajax",
                level: "danger",
                confirmText: "确认要删除？",
                api: "delete:/amis/api/mock2/sample/${id}",
              },
            ],
          },
        ],
      },
    ],
  };

  window.jsonpCallback && window.jsonpCallback(response);
})();
